home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / cmds / cc / g++-dist / ChangeLog < prev    next >
Encoding:
Text File  |  1990-03-09  |  37.0 KB  |  979 lines

  1. Thu Mar  1 19:32:03 1990  Michael Tiemann  (tiemann at teacake)
  2.  
  3.     * version.c: version 1.37.1 released.
  4.  
  5.     * integrate.c (expand_inline_function): Round up size of parm_map.
  6.  
  7.     * g++.texinfo: Updated to version 1.37.1, including the addition
  8.     of a new chapter on exception handling.
  9.  
  10.     * ld.c: Fixed #ifdef problems introduced by Mark Ullman.
  11.  
  12.     * cplus-parse.y (print_parse_statistics): Modified to work in case
  13.     YYDEBUG is not defined.
  14.  
  15. Wed Feb 28 09:45:09 1990  Michael Tiemann  (tiemann at teacake)
  16.  
  17.     * version.c: version 1.37.0 released.
  18.  
  19.     * HINTS: Hacked to look like an RMAIL file.
  20.  
  21.     * cplus-typeck.c (build_modify_expr_1): Copy virtual baseclasses
  22.     of members.
  23.  
  24. Mon Feb 26 06:36:50 1990  Michael Tiemann  (tiemann at teacake)
  25.  
  26.     * cplus-class.c (finish_base_struct): When building B->VFIELDS,
  27.     use precisely the right baseclass in the TREE_PURPOSE slot.
  28.     * cplus-class.c (modify_vtable_entries): Add additional test of
  29.     normalcy, which is that TREE_PURPOSE (VSLOTS) agree with the
  30.     basetype that TREE_VALUE (VSLOTS) is.
  31.  
  32.     * cplus-decl.c (finish_decl): If ASMSPEC_TREE is non-zero, then
  33.     zero out DECL_RTL (DECL).  Otherwise, it won't take.
  34.  
  35. Sun Feb 25 03:50:08 1990  Michael Tiemann  (tiemann at teacake)
  36.  
  37.     * cplus-typeck.c (build_modify_expr): Fix off-by-one bug in array
  38.     assignment case.
  39.  
  40.     * cplus-init.c (cplus_expand_expr_stmt): Move function from here...
  41.     * cplus-decl.c (cplus_expand_expr_stmt): ...to here.  Now we can
  42.     handle binding-level semantics at `exprstmt' boundaries.
  43.  
  44.     * cplus-decl.c (lang_decode_option): Moved function from here...
  45.     * cplus-decl2.c (lang_decode_option): ...to here.  Also moved
  46.     flags around, as neccessary.
  47.  
  48.     * cplus-method.c (various places): Call    `dump_readonly_or_volatile'
  49.     in many more places (saving 624 bytes object code).
  50.  
  51.     * tree.h (struct tree_common): Add `raises_attr' and define
  52.     TREE_RAISES.
  53.     * tree.c (build{,1}): Set TREE_RAISES bit.
  54.     * cplus-class.c (build_method_call): Set TREE_RAISES bit.
  55.     * cplus-cvt.c (convert_to_aggr): Ditto.
  56.     * cplus-typeck.c (build_function_call,actualparameterlist): Ditto.
  57.     * cplus-init.c (expand_aggr_init_1): Don't know what to do about
  58.     TREE_RAISES, so #if 0'd out code to set it.
  59.  
  60.     * cplus-decl.c (struct binding_level): Add new fields
  61.     `more_exceptions_ok' and `have_exceptions'.
  62.  
  63. Sat Feb 24 14:05:01 1990  Michael Tiemann  (tiemann at arkesden)
  64.  
  65.     * cplus-decl.c (finish_function): Move code up that handles named
  66.     return values that got kicked out of registers (hard or pseudo).
  67.  
  68.     * stmt.c (expand_function_start): Failed to set TREE_REGDECL in
  69.     the case that PARMS_HAVE_CLEANUPS was nonzero.
  70.  
  71.     * stmt.c (expand_goto_internal,fixup_cleanups): After running
  72.     cleanups, fixup the stack.
  73.  
  74. Fri Feb 23 07:40:17 1990  Michael Tiemann  (tiemann at arkesden)
  75.  
  76.     * cplus-cvt.c (build_type_conversion): There is only one void
  77.     type, so don't try looking "default" void to see if different.
  78.  
  79.     * cplus-except.c (expand_cplus_end_catch): Call `expand_end_catch'
  80.     instead of `expand_escape_except'.
  81.  
  82.     * cplus-except.c (expand_cplus_{end_except,reraise}): In case of
  83.     unhandled exceptions, have the program call
  84.     `__unhandled_exception' instead of `abort'.
  85.  
  86.     * cplus-class.c (ideal_candidate): If the best candidate requires
  87.     a strict subset of the user-defined type conversions of all the
  88.     other candidates, pick it as the best.
  89.  
  90.     * cplus-type2.c (build_functional_cast): If both attempts to cast
  91.     the argument failed, see why with LOOKUP_NORMAL, not
  92.     LOOKUP_COMPLAIN.
  93.  
  94. Thu Feb 22 03:52:00 1990  Michael Tiemann  (tiemann at arkesden)
  95.  
  96.     * clpus-decl.c ({push,pop}_decl_level): Now #includes "stack.h"
  97.     and uses `{push,pop}_stack_level'.
  98.  
  99.     * cplus-decl.c (hack_incomplete_structures): Now also completes
  100.     arrays of incomplete structs.
  101.  
  102.     * cplus-lex.c (build_operator_fnname): Don't get faked out by
  103.     ERROR_MARK as the TREE_CODE.
  104.  
  105.     * stor-layout.c (layout_{record,union}): For loops over fields,
  106.     skip if TREE_CODE (field) != FIELD_DECL, instead of testing if ==
  107.     CONST_DECL or VAR_DECL or TYPE_DECL etc.
  108.  
  109.     * cplus-decl.c (pushtag): Do gratuitous C++ typedefing even when
  110.     in C language scope.  Sigh.
  111.  
  112.     * cplus-decl.c (xref_tag): Don't assume CODE == TREE_CODE (REF).
  113.     It's not when the user redeclares REF as the wrong kind of tag.
  114.  
  115.     * cplus-search.c (dfs_init_vbase_pointers): Use TREE_PURPOSE of
  116.     VBASE_INIT_RESULT to hold the type of the virtual baseclass that
  117.     was initialized.
  118.     * cplus-init.c (expand_aggr_vbase_init): Walk through RESULT and
  119.     INIT_LIST in the order of CLASSTYPE_VBASECLASSES.
  120.     * cplus-init.c (expand_aggr_vbase_init_1): New function.
  121.  
  122.     * cplus-decl.c (finish_function): Test CLASSTYPE_VSIZE before
  123.     calling `build_virtual_init'.
  124.  
  125. to do:    fix protected squeaking through with -fsave-memoized
  126. to do:  unify code in expand_vec_init, expand_vec_delete
  127. to do:  for-local objects with destructors do not land in the right
  128.     cleanup contour.
  129. to do:  fix complicated multiple inheritance bugs that strike when
  130.     baseclasses are not virtual, and appear at multiple sites within
  131.     the lattice.
  132. to do:  integrate.c vs GCC.
  133. to do:  virtual functions for Convex and Choices
  134. to do:  real pointers to members
  135.  
  136. Mon Feb 19 13:48:30 1990  Michael Tiemann  (tiemann at arkesden)
  137.  
  138.     * cplus-decl.c (grokdeclarator): Fix up ENUMERAL_TYPEs which are
  139.     ANON_AGGR_NAME_P.
  140.  
  141.     * cplus-cvt.c (convert): If we know a type conversion applies,
  142.     don't try for fancy constructors.
  143.  
  144.     * cplus-decl.c (build_enumerator): TREE_TYPE (VALUE) must always
  145.     be INTEGER_TYPE_NODE before calling `build_binary_op_nodefault'.
  146.  
  147.     * cplus-decl.c (complete_array_type): Merged GCC 1.37 code.
  148.     * integrate.c (copy_for_inline): Ditto.
  149.     * cplus-decl.c (grokdeclarator): Ditto.
  150.     * stor-layout.c (layout_type): Ditto.
  151.  
  152. Sat Feb 17 08:49:21 1990  Michael Tiemann  (tiemann at arkesden)
  153.  
  154.     * cplus-typeck.c (require_instantiated_type): Make non-static.
  155.     * cplus-typeck.c (type_unknown_p): New function, returns
  156.     truthvalue of whether the TREE_TYPE of its argument is known.
  157.     * cplus-class.c (various places): Changed to call these functions.
  158.  
  159. Fri Feb 16 15:17:54 1990  Michael Tiemann  (tiemann at arkesden)
  160.  
  161.     * cplus-class.c (finish_struct): Cons up default destructors when
  162.     T uses virtual baseclasses or multiple inheritance, in addition to
  163.     the usual cases.
  164.  
  165.     * integrate.c (copy_rtx_and_substitute): If we were needing an
  166.     inline target (for example, a USE of the function return result),
  167.     and we don't have one, just cons one up.
  168.  
  169.     * cplus-init.c (expand_vec_init): Comparison of HOST_I against
  170.     zero should have been >=, not >.
  171.  
  172.     * cplus-dem.c: Fix #defines to use bcopy, bcmp instead of the str
  173.     functions.
  174.  
  175.     * cplus-cvt.c (convert): If converting to void type, check for
  176.     possible operator void.
  177.  
  178.     * stmt.c (fixup_cleanups): If cleanups expand to nothing, don't
  179.     call `reorder_insns'.
  180.  
  181.     * cplus-search.c ({push,pop}_stack_level): New functions.
  182.     Abstracts functionality of pushing/popping objects to/from
  183.     obstacks.
  184.     * cplus-search.c ({push,pop}_search_level): Use new *_stack_level
  185.     functions.
  186.     * cplus-search.c ({push,pop}_type_level): Ditto.
  187.  
  188. Tue Feb 13 11:32:12 1990  Michael Tiemann  (tiemann at teacake)
  189.  
  190.     * cplus-init.c (build_delete): This function can get visibilities
  191.     wrong if default destructors are not built (currently the case).
  192.     As a temporary fix, pass FLAGS with LOOKUP_PROTECTED_OK for base
  193.     destructor calls, and test LOOKUP_PROTECTED_OK when thinking about
  194.     complaining.
  195.  
  196. Sun Feb 11 11:47:37 1990  Michael Tiemann  (tiemann at arkesden)
  197.  
  198.     * cplus-decl.c (finish_function): Don't call `build_virtual_init'
  199.     for types which don't have virtual functions.  Similarly, don't
  200.     call `build_delete' if it doesn't need a destructor.
  201.  
  202.     * cplus-init.c (finish_base_init,build_delete): When building up
  203.     and tearing down objects' bases, build pointers to base objects
  204.     directly rather than by calling through `convert_pointer_to',
  205.     since ambiguity in the lattice causes it trouble.
  206.  
  207.     * cplus-typeck.c (build_modify_expr): Removed unneeded casts when
  208.     building sum of base address + offset.
  209.     * cplus-class.c (build_vbase_path): Ditto.
  210.     * cplus-class.c (build_vfn_ref): Ditto.
  211.     * cplus-init.c (resolve_offset_ref): Ditto.
  212.     * cplus-init.c (build_delete): Ditto.
  213.  
  214.     * cplus-typeck.c (build_modify_expr): Fix parenthesis error for
  215.     deciding whether to recurse through aggregates or not
  216.     (TYPE_USES_VIRTUAL_BASECLASSES is not enough).
  217.  
  218.     * cplus-parse.y (try): Change type from TTYPE to ITYPE.
  219.     * cplus-parse.y (stmt): Call `cplus_expand_end_try' with result of
  220.     `try' stmt.  Now, if we wanted to, we could pass additional
  221.     information about whether this try block is followed by an except
  222.     stmt or a reraise clause.
  223.     * cplus-parse.y (stmt): When processing a reraise clause, use
  224.     ERROR_MARK_NODE as the default handler, to indicate that we
  225.     actually have one, rather than NULL_TREE, which claims that we
  226.     don't.
  227.     * cplus-except.c (cplus_expand_end_except): Always try next
  228.     handler before ending the block.
  229.     
  230. Sat Feb 10 13:57:28 1990  Michael Tiemann  (tiemann at teacake)
  231.  
  232.     * cplus-init.c (build_delete): Use `convert_pointer_to' when ADDR
  233.     is TREE_LITERAL.
  234.  
  235.     * cplus-class.c (build_vfn_ref): Save intermediate result in
  236.     SAVE_EXPR so we don't have to compute each component of virtual
  237.     function pointer twice.  But only do this when BUILDING_CLEANUP
  238.     is zero.
  239.     * cplus-decl.c (maybe_build_cleanup): New global variable
  240.     BUILD_CLEANUP is controlled by this function.
  241.  
  242.     * cplus-expr.c (cplus_expand_expr): Use separate CALL_TARGET and
  243.     RETURN_TARGET, in case call to `expand_expr' returns something
  244.     different than CALL_TARGET in NEW_EXPR case.
  245.  
  246. Fri Feb  9 04:00:42 1990  Michael Tiemann  (tiemann at teacake)
  247.  
  248.     * cplus-lex.c (getch): New function.  Encapsulates call to `getc'
  249.     macro within function to save space.
  250.     * cplus-lex.c (check_newline): Call `getch' instead of `getc' to
  251.     get pragma text.
  252.  
  253. Mon Feb  5 13:55:33 1990  Michael Tiemann  (tiemann at arkesden)
  254.  
  255.     * cplus-decl.c (grokdeclarator): Don't gripe if static member has
  256.     incomplete type.
  257.  
  258. Sun Feb  4 19:51:52 1990  Michael Tiemann  (tiemann at arkesden)
  259.  
  260.     * cplus-class.c (modify_vtable_entries): Fix failure to use
  261.     proper initial value for OFFSET.
  262.  
  263.     * cplus-tree.c (layout_vbasetypes): Gross error was accidently
  264.     causing storage to be exponentially counted!  Fixed...
  265.  
  266.     * cplus-decl.c (duplicate_decls): Catch case where OLDDECLS are
  267.     some overloaded functions and NEWDECL is not a FUNCTION_DECL.
  268.  
  269.     * cplus-init.c (finish_base_init): If there are several members
  270.     with the same name (from different baseclasses), get the topmost
  271.     one.
  272.  
  273.     * cplus-tree.c (lang_simple_cst_equal): New function.  Callback
  274.     for `simple_cst_equal'.
  275.     * tree.c (simple_cst_equal): Needs new treatment for handling
  276.     NEW_EXPR and CPLUS_NEW_EXPR.  Use call-back for latter.
  277.     * tree.c (simple_cst_list_equal): Now non-static.
  278.  
  279.     * integrate.c (expand_inline_function): Use `convert_move' instead
  280.     of `emit_move_insn' when we need to copy INLINE_TARGET back to
  281.     TARGET.
  282.  
  283. Sat Feb  3 09:45:47 1990  Michael Tiemann  (tiemann at teacake)
  284.  
  285.     * ld.c: integrate changes from Mark Ullman which make linker
  286.     suitable for cross linking.
  287.  
  288. Thu Feb  1 16:27:03 1990  Michael Tiemann  (tiemann at teacake)
  289.  
  290.     * cplus-expr.c (cplus_expand_expr): If TARGET is 0, generate a new
  291.     temporary, unless MODE is BLKmode, in which case we abort.
  292.  
  293. Tue Jan 30 02:55:20 1990  Michael Tiemann  (tiemann at arkesden)
  294.  
  295.     * version.c: version 1.36.4 released.
  296.  
  297.     * cplus-decl.c (build_enumerator): Make it impossible to lose if
  298.     ENUM_NEXT_VALUE is something like INTEGER_ONE_NODE.
  299.  
  300.     * tree.c (build_int_2): Don't need to set TREE_LITERAL here, it is
  301.     set in `make_node'.
  302.     * tree.c (make_node): Increment `TREE_NODE_KINDS[C_KIND]' for
  303.     INTEGER_CST nodes.
  304.  
  305.     * cplus-init.c (expand_aggr_init_1): NEW_EXPR now encapsulates new
  306.     information (due to compiler merging); lossage fixed.
  307.  
  308.     * case.c (various places): Replace calls to `build_int_2 (x, 0)'
  309.     (where x == 0 or x == 1) with INTEGER_{ZERO,ONE}_NODE as
  310.     appropriate.
  311.  
  312.     * cplus-typeck.c (build_component_addr): Break out code to build
  313.     the ADDR_EXPR of a COMPONENT_REF from `build_unary_op'.
  314.     * cplus-cvt.c (build_up_reference): Call `build_component_addr' in
  315.     case of COMPONENT_REF.
  316.  
  317. Sun Jan 28 04:39:54 1990  Michael Tiemann  (tiemann at arkesden)
  318.  
  319.     * cplus-init.c (build_vec_delete): Set TREE_VOLATILE on BLOCK,
  320.     LOOP, and IF_STMT, to avoid spurious warning messages about
  321.     statements not being useful.
  322.     * stmt.c (warn_if_unused_value): Don's warn for LOOP_STMT,
  323.     IF_STMT, or LET_STMT.
  324.  
  325.     * cplus-decl.c (build_enumerator): Prepare for fact that `fold'
  326.     might put NOP_EXPRs around everything that is not an lvalue.
  327.  
  328.     * cplus-method.c (build_opfncall): New parameter FLAGS.
  329.     Don't lose unless FLAGS include LOOKUP_COMPLAIN; there's always a
  330.     chance that a type conversion will work, after all.
  331.     * All callers changed.
  332.  
  333.     * cplus-cvt.c (build_type_conversion): Permit `operator int' to
  334.     convert when `unsigned' is wanted (provided no `operator unsigned'
  335.     exists).  Same for `long' and `unsigned long'.
  336.  
  337.     * cplus-expr.c: New file.  Contains definition of new function
  338.     `cplus_expand_expr'.
  339.  
  340.     * cplus-lex.c (init_lex): Initialize LANG_EXPAND_EXPR.
  341.  
  342.     * toplev.c (LANG_EXPAND_EXPR): New variable is pointer-to-function
  343.     which expands language-specific tree codes.  Its default is
  344.     `fancy_abort'.
  345.     * cplus-tree.def (CPLUS_NEW_EXPR): New tree code.
  346.  
  347. Sat Jan 27 09:30:13 1990  Michael Tiemann  (tiemann at arkesden)
  348.  
  349.     * tree.c (decl_type_context): Handle LET_STMT.
  350.  
  351.     * stmt.c (expand_catch): Renaming of function
  352.     `expand_start_catch'.  This function no longer takes EXITFLAG or
  353.     ESCAPEFLAG as parameters (which is just as well, since it never
  354.     used them anyway).
  355.     * cplus-except.c (expand_cplus_start_catch): Caller changed.
  356.     * cplus-parse.y: Removed vestigial call to `expand_end_catch'.
  357.  
  358.     * cplus-decl.c (duplicate_decls): Use FUNCTION_SIZE as measure of
  359.     size of FUNCTION_DECL.
  360.  
  361.     * cplus-class.c (finish_base_struct): Get a fresh assoc list for
  362.     BASETYPE before calling `propagate_basetype_offsets'.  Also, copy
  363.     the language-specific parts of BASETYPE.
  364.     * cplus-class.c (propagate_basetype_offsets): FOR_TYPE now owns
  365.     its assoc list for sure.
  366.  
  367.     * cplus-class.c (build_vbase_path): Convert EXPR at each stage of
  368.     the lowering so that we don't get multiple calls to
  369.     `build_vbase_path' when we try to build the vbase pointer.
  370.     @@ This could probably be solved more cleanly.
  371.  
  372.     @@ Note that COMPONENT_REFs used as instance variables in method
  373.     calls lose the fact that they were of fixed type.
  374.  
  375.     * cplus-decl.c (LANG_F_OPTIONS): Add FLAG_NO_INLINE for
  376.     -fno-inline.
  377.     * cplus-decl.c (grokdeclarator): Implement FLAG_NO_INLINE.
  378.  
  379.     * cplus-decl.c (pushdecl): Only record an incomplete variable if
  380.     it is RECORD_TYPE or UNION_TYPE.  ARRAY_TYPE does not count.
  381.  
  382.     * cplus-init.c ({value,purpose}_member): Moved to tree.c.
  383.     * cplus-decl2.c (FIRST_GLOBAL_OBJECT_NAME): Moved to varasm.c.
  384.  
  385.     * cplus-init.c (build_delete): Fixed code to avoid going through
  386.     virtual function tables when some baseclasses are virtual.
  387.     Accomplished by changing parameter PROTECT to FLAGS.
  388.     * All callers changed.
  389.  
  390. Fri Jan 26 03:44:15 1990  Michael Tiemann  (tiemann at teacake)
  391.  
  392.     * cplus-decl.c (xref_tag): For jjg: make typedefs and struct defs
  393.     more equivalent.
  394.  
  395.     * cplus-decl.c (xref_tag): Derived unions are invalid.
  396.  
  397.     * cplus-decl.c (finish_function): For destructors, remember to run
  398.     base destructors for virtual baseclasses.
  399.  
  400.     * cplus-search.c (get_base_distance): Track leftmost path in chain
  401.     whether or not PATH_PTR is non-NULL.
  402.  
  403.     * cplus-init.c (expand_vec_delete): Deleted.  Callers now expand
  404.     result from `build_vec_delete'.
  405.     * Reinstall Jan 23 changes marked `@'.
  406.  
  407. Thu Jan 25 21:35:27 1990  Michael Tiemann  (tiemann at teacake)
  408.  
  409.     * expr.c (expand_expr): Handle expansion of LOOP_STMT and IF_STMT.
  410.  
  411.     * tree.c (build_loop): Bring this function out of its #ifdef.
  412.  
  413.     * stmt.c (expand_decl): Remove CLEANUP argument.
  414.     * stmt.c (expand_decl_cleanup): New function, called when cleanup
  415.     is needed.
  416.     * cplus-decl.c (finish_decl): Use `expand_decl_cleanup'.
  417.  
  418. Wed Jan 24 07:34:40 1990  Michael Tiemann  (tiemann at arkesden)
  419.  
  420.     * cplus-decl.c (maybe_build_cleanup): Never build cleanups on the
  421.     MOMENTARY_OBSTACK.
  422.  
  423.     * stmt.c: Merged to 1.36.93.
  424.     * expr.c: Merged to 1.36.93.
  425.  
  426. Tue Jan 23 02:40:42 1990  Michael Tiemann  (tiemann at teacake)
  427.  
  428.     * cplus-typeck.c (build_binary_op_nodefault): Use
  429.     `conver_pointer_to' to convert arguments before comparing
  430.     aggregate pointers.
  431.  
  432.     * cplus-class.c (build_vbase_path): Optimize path to virtual bases
  433.     through objects with fixed type.
  434.  
  435.     * cplus-typeck.c (build_component_ref_2): Deleted.
  436.     * cplus-typeck.c (build_component_ref): When FIELD comes from a
  437.     non-"normal" baseclass, go through `convert_to_pointer' to convert
  438.     DATUM to the right address.
  439.  
  440.     * cplus-typeck.c (build_unary_op): Handle case where FIELD is
  441.     really a TYPE_DECL (which is used just for its DECL_OFFSET).
  442.  
  443.     The following changes are for merged GCC/G++.  Changes marked
  444.     with `@' had to be backed out.
  445.     @ cplus-init.c (expand_delete): Deleted.
  446.     @ cplus-decl.c (maybe_build_cleanup): Return tree nodes built by
  447.     `build_delete' rather than building up structure with DELETE_EXPR.
  448.     * cplus-decl2.c (finish_function): Expand expression returned from
  449.     `build_delete' rather than calling `expand_delete'.
  450.     * cplus-init.c (expand_vec_delete): Ditto.
  451.     @ expr.c (expand_expr): No longer any need to handle
  452.     `DELETE_EXPR'.
  453.     @ tree.def (DELETE_EXPR): Move this to cplus-tree.def.
  454.  
  455. Mon Jan 22 00:21:41 1990  Michael Tiemann  (tiemann at teacake)
  456.  
  457.     * expr.c (expand_call): Don't reused pending stack space more than
  458.     once in a given nest of calls.
  459.  
  460.     * cplus-init.c (build_delete): Don't build COND_EXPRs when we know
  461.     we don't have to.
  462.  
  463.     * cplus-decl.c (finish_function): At end of destructor, no need to
  464.     cast down the virtual function table if there is no virtual
  465.     function table below (i.e., EXPRSTMT is a NOP_EXPR of
  466.     INTEGER_ZERO_NODE).
  467.  
  468.     * cplus-init.c (finish_base_init): Move code which sets
  469.     CLASSTYPE_MARKED6 of each vbase type to 1 into
  470.     `expand_aggr_vbase_init'.
  471.     * cplus-init.c (expand_aggr_vbase_init): Now static in this file.
  472.     Always set CLASSTYPE_MARKED6 of each vbase type before running the
  473.     initialization, since all virtual baseclasses exposed to this
  474.     function must be initialized.
  475.  
  476.     * cplus-search.c (build_type_pathname): Fix broken use of
  477.     obstacks.
  478.  
  479.     * cplus-typeck.c (c_expand_return): Don't try to call
  480.     `expand_return' when DECL_RESULT is of void type.
  481.  
  482.     * cplus-lex.c (build_opid): Rename C++-specific
  483.     `build_op_identifier' to `build_opid'.
  484.     @@ Suggest changing `build_op_identifier' in tree.o to interface
  485.     of `build_opid'.
  486.     * All callers changed.
  487.  
  488. Sun Jan 21 06:00:03 1990  Michael Tiemann  (tiemann at teacake)
  489.  
  490.     * dbxout.c (dbxout_function): Put out debug info for a named
  491.     return value.
  492.     * dbxout.c (dbxout_symbol): Treat a named RESULT_DECL like a
  493.     VAR_DECL.
  494.  
  495.     * cplus-decl.c (store_return_init): If named return value comes in
  496.     a register, put it in a pseudo.
  497.     * cplus-typeck.c (mark_addressable): Simplify handling of
  498.     RESULT_DECL--no need for anything fancy.
  499.     * cplus-cvt.c (convert_to_reference): Ditto.
  500.  
  501.     * cplus-method.c (build_opfncall): Test FLAGS&LOOKUP_COMPLAIN to
  502.     decide whether call to `build_overload_call' should complain.
  503.  
  504.     * cplus-decl.c (FLAG_INT_ENUM_EQUIVALENCE): New variable, controls
  505.     how ints and enums should interconvert.
  506.     * cplus-class.c (convert_harshness): Implement behavior based on
  507.     that flag.
  508.  
  509.     * cplus-class.c (build_method_call): alloca `harshness' field of
  510.     CP before calling `build_overload_call'.
  511.     * cplus-class.c (build_overload_call): Don't alloca `harshness' of
  512.     FINAL_CP, since caller does this.  Also, use `oballoc' for
  513.     `harshness' arrays of CP array when running the list of functions
  514.     to try.
  515.  
  516.     * cplus-method.c (hack_identifier): Use `error', not
  517.     `error_with_decl' to report visibility violation for static
  518.     members.  Also, compute visibility with `compute_visibility'.
  519.  
  520. Sat Jan 20 04:18:40 1990  Michael Tiemann  (tiemann at teacake)
  521.  
  522.     * cplus-decl.c (finish_decl [#if MERGED]): Don't build DECL's
  523.     cleanups until after it has been laid out.
  524.  
  525.     * cplus-decl.c (maybe_build_cleanup [#if MERGED]): Return an
  526.     RTL_EXPR instead of a DELETE_EXPR.
  527.  
  528.     * cplus-class.c (prepare_fresh_vtable): Copy the list of virtual
  529.     functions fom ASSOC, not from BASE_ASSOC (whose list is too
  530.     short).
  531.     @@ Is DECL_VPARENT right at all?
  532.  
  533.     * cplus-class.c (modify_vtable_entries): Handle case where virtual
  534.     function comes from baseclass of virtual baseclass.
  535.  
  536.     * cplus-search.c (get_base_distance): Always follow the leftmost
  537.     non-virtual path.
  538.  
  539.     * cplus-class.c (finish_struct): When inheriting a base class's
  540.     VFIELD, set its DECL_OFFSET to the correct value, for the cases
  541.     when we use CLASSTYPE_VFIELD instead of `lookup_field' to get to
  542.     the vfield pointer.
  543.  
  544.     * expr.c (expand_expr): Use language-idependent techniques for
  545.     handling NEW_EXPR.
  546.  
  547.     * cplus-init.c (expand_aggr_init): When initializing from a
  548.     CONSTRUCTOR, it does not matter whether TYPE has a constructor
  549.     defined or not: just strip out the elements as though they were
  550.     args to a constructor and proceed.
  551.  
  552.     * cplus-class.c (build_method_call): If we need the address of a
  553.     CONSTRUCTOR, initialize a fresh temporary, as in the NOP_EXPR
  554.     case.
  555.  
  556.     * cplus-decl2.c (grok_method_quals): When building type variants,
  557.     build the pointer types to the varaints.
  558.     * cplus-decl.c (grokdeclarator): Ditto.
  559.  
  560.     * cplus-class.c (build_method_call): Error message was backwards
  561.     when DECL_CONTEXT (FUNCTION) was not a basetype for
  562.     CURRENT_CLASS_TYPE.
  563.  
  564.     * cplus-decl.c (grokdeclarator): If QUALS is non-NULL, don't abort
  565.     if TYPE is not METHOD_TYPE.  The correct error message will be
  566.     generated later.
  567.  
  568.     * cplus-method.c (hack_identifier): Check visibility of VAR_DECL
  569.     and CONST_DECL nodes.
  570.  
  571.     * cplus-class.c (instantiate_type): Don't smash the operand of an
  572.     ADDR_EXPR if the type instantiation fails.  Also, only give an
  573.     error message in that case if COMPLAIN is nonzero.
  574.  
  575. Fri Jan 19 15:12:27 1990  Michael Tiemann  (tiemann at teacake)
  576.  
  577.     * cplus-decl2.c (grok_method_quals): Don't drop list of exceptions
  578.     raised.
  579.  
  580. Thu Jan 18 00:20:29 1990  Michael Tiemann  (tiemann at apple-gunkies.ai.mit.edu)
  581.  
  582.     * cplus-lex.c (init_lex): Allocate OPNAME_TAB and ASSIGNOP_TAB.
  583.  
  584. Wed Jan 17 07:26:05 1990  Michael Tiemann  (tiemann at apple-gunkies.ai.mit.edu)
  585.  
  586.     * cplus-lex.c (get_time_identifier): Added cast for `alloca'.
  587.     * cplus-tree.c (layout_basetypes): Ditto.
  588.  
  589.     * stmt.c (expand_raise): Return nonzero if in exception nesting.
  590.  
  591.     * cplus-lex.c (init_lex): If C compiler doesn't understand the
  592.     construct `sizeof ("string")', then fill in initializer for
  593.     OPNAME_END by hand.
  594.  
  595.     * cplus-init.c: Move declarations of extern struct rtx_def things
  596.     to top of file to keep /bin/cc happy.
  597.  
  598.     * cplus-lex.c (init_lex): Set DECL_PRINTABLE_NAME.
  599.  
  600.     * varasm.c (record_constant_rtx): Save DESC on `current_obstack'
  601.     instead of `saveable_obstack'.
  602.  
  603.     * tree.c (set_identifier_size): SIZE is size in bytes.
  604.     * cplus-lex.c (init_lex): Call `set_identifier_size' with number
  605.     of bytes, not number of slots.
  606.  
  607.     * toplev.c (compile_file): If `bison.simple' is out of date,
  608.     consider that an error.
  609.  
  610.     * cplus-cvt.c (convert): Better error message if type conversion
  611.     via constructor fails.
  612.  
  613.     * cplus-typeck.c (build_modify_expr): Spurious `else' appeared
  614.     when LHSTYPE was aggr type.  Deleted.
  615.  
  616.     * cplus-decl2.c (finish_file): Make the dummy variable at the end
  617.     of the virtual function table chain look defined and used (soas
  618.     not to generate spurious warnings).
  619.  
  620. Tue Jan 16 15:42:30 1990  Michael Tiemann  (tiemann at apple-gunkies.ai.mit.edu)
  621.  
  622.     * varasm.c (output_constant): Merged latest GCC changes.
  623.     * toplev.c: Merged latest GCC changes.
  624.  
  625.     * cplus-decl.c (init_lex): Must call
  626.     `set_identifier_size' before allocating any identifiers.
  627.  
  628.     * All files: Changed MEMBER_REF to OFFSET_REF.
  629.     * cplus-init.c (build_offset_ref): Rename function
  630.     `build_member_ref' to this.
  631.     * cplus-init.c (resolve_offset_ref): Rename function
  632.     `resolve_member_ref' to this.
  633.  
  634.     * cplus-lex.c (init_lex): Handle language-specific tree codes.
  635.  
  636.     * tree.def (IDENTIFIER_NODE): Default length is 2.
  637.     * tree.def ({SCOPE,MEMBER}_REF): Moved definition to
  638.     cplus-tree.def.
  639.     * tree.def (TYPE_EXPR): Ditto.
  640.  
  641.     * tree.c: Merge language-specific tree code support from GCC
  642.     version 1.90.
  643.     * tree.c (tree_cons,build_tree_list): Simplify these back to using
  644.     `make_node' instead of inline-expansion.
  645.     * tree.c (build_parse_node): renamed function `build_nt0' to this.
  646.     All callers changed.
  647.  
  648.     * Makefile glitch for collect2 fixed.
  649.  
  650. Tue Jan 16 00:38:39 1990  Michael Tiemann  (tiemann at apple-gunkies.ai.mit.edu)
  651.  
  652.     * version.c: Version 1.36.3 released.
  653.  
  654.     * Makefile: Fixed makefile for collect2 (for Convexen) as per
  655.     suggesions of <ngo%tammy@harvard.harvard.edu>.
  656.     Also fixed a typo.
  657.  
  658. Mon Jan 15 10:57:43 1990  Michael Tiemann  (tiemann at apple-gunkies.ai.mit.edu)
  659.  
  660.     * cplus-class.c (build_vbase_path): If path is erroneous (i.e., up
  661.     from a virtual baseclass), then set *BASEP = NULL_TREE.
  662.     * cplus-cvt.c (convert_to_pointer_force): Test BASETYPE before
  663.     testing the DECL_OFFSET of its TYPE_NAME.
  664.  
  665.     * expr.c (store_one_arg): Handle non-PARM_BOUNDARY BLKmode
  666.     parameters in a way that is symmetric with `assign_parms'.
  667.  
  668.     * cplus-init.c (expand_vec_init): Allow assignment semantics if
  669.     FROM_ARRAY is 2.
  670.     * cplus-typeck.c (build_modify_expr): Call `expand_vec_init' with
  671.     in this fashion if an array assignment must be performed.
  672.  
  673.     * expr.c (fixed_type_p): New function says whether the compiler
  674.     guarantees that it knows the true type of an object.
  675.     * expr.c (expand_expr): Call that function for INIT_EXPR and
  676.     MODIFY_EXPR.  Also, for MODIFY_EXPR, check both RHS and LHS.
  677.  
  678.     * cplus-typeck.c (build_unary_op): When building an ADDR_EXPR of a
  679.     COMPONENT_REF, must convert the base to the pointer type of the
  680.     DECL_CONTEXT of FIELD, not simply ARGTYPE.  Bug triggered when
  681.     FIELD has same type as a virtual or non-leftmost baseclass of
  682.     TYPE.
  683.  
  684. Sun Jan 14 07:50:28 1990  Michael Tiemann  (tiemann at apple-gunkies.ai.mit.edu)
  685.  
  686.     * cplus-typeck.c (actualparameterlist): Convert FUNCTION_DECLs for
  687.     virtual functions to their proper representation if they were
  688.     instantiated.
  689.  
  690.     * cplus-typeck.c (instantiate_type_1): New function, factors out
  691.     common code in calling `instantiate_type'.
  692.     * cplus-class.c (instantiate_type): Now permitted to call this
  693.     function with OP_IDENTIFIER.  (Previously would abort).
  694.  
  695.     * Makefile: Use $(INCLUDES) instead of various random -I options
  696.     scattered throughout front-end.
  697.  
  698.     * varasm.c (assemble_variable): Fix bug where NAME has a '*'
  699.     prefix.
  700.  
  701. Sat Jan 13 00:17:25 1990  Michael Tiemann  (tiemann at apple-gunkies.ai.mit.edu)
  702.  
  703.     * cplus-class.c (compute_conversion_costs): Fixed comments and
  704.     rearranged code that handled type instantiation.  Also handled
  705.     case where type instantiation leaves a parameter ERROR_MARK_NODE
  706.     (consequently making ACTUAL_TYPE ERROR_MARK_NODE).
  707.     * cplus-method.c (report_type_mismatch): Give better error message
  708.     when type instatiation fails and clobbers the argument type.
  709.  
  710.     * cplus-type2.c (basetype_or_else): Code factorization.
  711.     * All places with code of the form
  712.  
  713.           if (t1 == t2 || get_base_type (t1, t2, 0))
  714.             do something;
  715.           else
  716.               do something else;
  717.  
  718.           now calls this function.
  719.  
  720.     * cplus-search.c (get_base_type): For jjg@sun.com: let friend
  721.     classes TYPE have access to immediate baseclasses of TYPE.
  722.     * cplus-search.c (get_base_distance): Same change.
  723.  
  724.     * cplus-method.c (build_opfncall): Give error messages on all
  725.     overloaded functions which non-trivially fail except ADDR_EXPR and
  726.     MODIFY_EXPR.
  727.     * cplus-class.c (build_method_call): Improved error message for
  728.     non-const member function called with const object.
  729.  
  730.     * cplus-class.c (build_vbase_path): New function.  Multi-level
  731.     version of `build_vbase_pointer'.  Code was moved from
  732.     `convert_to_pointer'.
  733.     * cplus-cvt.c (convert_to_pointer): Call `build_vbase_path'.
  734.     * cplus-cvt.c (convert_pointer_to): Ditto.
  735.     * cplus-cvt.c (convert_to_pointer_force): Remove duplicated code
  736.     and call `build_vbase_path'.
  737.  
  738.     * cplus-decl.c (original_result_rtx): New variable.  If named
  739.     return value starts in register, but needs to be addressable, then
  740.     we put the original RESULT_DECL's rtl in here.
  741.     * cplus-typeck.c (c_expand_return): Implement this.
  742.     * cplus-decl.c (finish_function): At end of function, if
  743.     ORIGINAL_RESULT_RTX is non-zero, move DECL_RESULT (FNDECL) there.
  744.     * cplus-typeck.c (mark_addressable): Allow this new feature.
  745.     * cplus-cvt.c (convert_to_reference): Ditto.
  746.  
  747. Fri Jan 12 00:20:06 1990  Michael Tiemann  (tiemann at apple-gunkies.ai.mit.edu)
  748.  
  749.     * cplus-tree.h (TREE_CALLS_NEW): New meaning for TREE_LANG_FLAG_2:
  750.     for any kind of _EXPR or _REF node, it means that underneath is a
  751.     call to the storage allocator.  If we later find out what was
  752.     wanting initialization, we can pitch the call to `new', and the
  753.     subsequent copy, winning big on things like "return String (foo);".
  754.     * cplus-init.c (build_new): Set this bit.
  755.     * cplus-class.c (build_method_call): Ditto.
  756.     * cplus-method.c (build_opfncall): Ditto.
  757.     * cplus-init.c (expand_aggr_init_1): Optimize calls to
  758.     constructors.
  759.  
  760.     * cplus-cvt.c (convert_to_reference): If DECL is ERROR_MARK_NODE,
  761.     then consider this an implicit conversion; if DECL is NULL_TREE,
  762.     it is explicit.
  763.     * cplus-typeck.c (convert_for_initialization): Be explicit that
  764.     this is an implicit conversion.
  765.  
  766.     * cplus-cvt.c (convert_from_reference): Don't special-case
  767.     converting REFERENCE_EXPRs from references.
  768.  
  769.     * cplus-cvt.c (convert_to_*): Factor out checks that EXPR is a
  770.     REFERENCE_TYPE object.
  771.     * cplus-cvt.c (convert{_force}): Factor it to here.
  772.  
  773.     * cplus-cvt.c (convert_pointer_to): New function.  Previously
  774.     `convert_to_nonzero_pointer', but now takes converts to pointer-to
  775.     TYPE, rather than to TYPE.
  776.     * cplus-cvt.c (convert_to_nonzero_pointer): Deleted.
  777.     * All callers changed.
  778.  
  779.     * cplus-cvt.c (build_up_reference): If LOOKUP_PROTECTED_OK is set,
  780.     let `get_base_type' return an immediate private baseclass without
  781.     complaining.
  782.     * cplus-cvt.c (convert_to_reference): Don't need to check whether
  783.     conversion violates visibilities, since FLAGS is passed to
  784.     `convert_to_reference'.
  785.     * cplus-search.c (get_base_type): Implement that (if PROTECT == 3).
  786.  
  787.     * stmt.c (*except*): Use ESCAPE_LABEL instead of EXIT_LABEL as
  788.     primary means of control over exception handling nestings.
  789.     Where EXITFLAG was passed, also pass ESCAPEFLAG.
  790.     * All callers changed.  ESCAPEFLAG now controls behavior, not
  791.     EXITFLAG.
  792.  
  793.     * stmt.c (expand_exit_nonexcept): Delete this function.
  794.     * cplus-parse.y (stmt): Back out change which called
  795.     `expand_exit_nonexcept' instead of `expand_exit_something'.
  796.  
  797.     * cplus-init.c (expand_recursive_init): Don't forget to initialize
  798.     the vbase pointers if FOR_TYPE uses virtual baseclasses.
  799.  
  800.     * cplus-class.c (rank_for_overload): const/non-const disagreement
  801.     is between checking EVIL and checking USER.
  802.     * cplus-class.c (build_method_call): Don't hastily choose a method
  803.     which has const/non-const disagreement.
  804.  
  805.     * cplus-decl.c (build_function_decl): Unify `builtin_function' and
  806.     `auto_function'; also make it optional to push the function into
  807.     the binding contour.
  808.     * cplus-decl.c (init_decl_processing): Build ABORT_FNDECL.
  809.     * cplus-decl2.c (grok_function_init): Use ABORT_FNDECL.
  810.     * cplus-except.c (init_exception_processing): Ditto.
  811.  
  812. Thu Jan 11 10:39:31 1990  Michael Tiemann  (tiemann at apple-gunkies.ai.mit.edu)
  813.  
  814.     * cplus-decl2.c (finish_file): Merge changes from Raeburn
  815.     (raeburn@athena.mit.edu) which name file-level initializers
  816.     using global names declared instead of the filename containing
  817.     the objects needing file-level initialization.
  818.     * varasm.c (assemble_{variable,function}): Rest of changes merged.
  819.  
  820.     * cplus-cvt.c (convert_from_reference): When converting a
  821.     REFERENCE_EXPR, wrap TREE_OPERAND (VAL, 0) in the NOP_EXPR
  822.     instead of VAL--to save work later in `expand_expr'.
  823.  
  824.     * cplus-tree.h (LOOKUP_NO_CONVERSION): New flag which inhibits
  825.     looking for user-defined type conversions.
  826.     * cplus-type2.c (build_functional_cast): Use LOOKUP_NO_CONVERSION
  827.     when calling constructor since if a type conversion applied, we
  828.     don't want "two-level" conversions to take place.
  829.     * cplus-class.c (build_method_call): Test this flag when PASS == 2
  830.     and cp->user is non-zero.
  831.  
  832.     * cplus-decl.c (grokdeclarator): Don't set TYPE_HAS_DESTRUCTOR
  833.     here.
  834.     * cplus-decl2.c (grokclassfn): Set it here instead.
  835.  
  836. Wed Jan 10 07:42:39 1990  Michael Tiemann  (tiemann at apple-gunkies.ai.mit.edu)
  837.  
  838.     * cplus-class.c (build_method_call): -fall-virtual implies that
  839.     2nd argument to operator->() is an int, not a T (C::*X)(...).
  840.  
  841.     * cplus-decl.c (finish_function): Keep named return values from
  842.     catching warnings from jump.c about functions which appear to not
  843.     return a value.
  844.  
  845.     * cplus-type2.c (process_init_constructor): Test INIT before
  846.     copying TREE_HAS_CONSTRUCTOR flag to RESULT.
  847.  
  848.     * cplus-decl.c (pushdecl): If we had ANON_AGGRNAME_P in "C"
  849.     language scope, and if we get a better name, fix that up as well.
  850.     (Was only doing fixup for "C++" language scope).
  851.  
  852.     * cplus-method.c (dump_init): Handle CONSTRUCTOR as
  853.     initialization.
  854.     * cplus-typeck.c (actualparameterlist): Here, too.
  855.  
  856.     * cplus-decl.c (grokdeclarator): Move test of friend functions
  857.     with method qualifiers to `grokfndecl'.
  858.     * cplus-decl.c (grokfndecl): If QUALS is non-zero, then the
  859.     TREE_CODE of TYPE must be METHOD_TYPE.
  860.  
  861.     * integrate.c (expand_inline_function): Code using
  862.     THIS_STRUCT_VALUE_RTX was (blatantly) incorrect in case where
  863.     STRUCT_VALUE_INCOMING_RTX was MEM.  Code that looked right was
  864.     #if 0'd out, but don't know why.  Changed back to original code.
  865.  
  866. Tue Jan  9 22:56:22 1990  Michael Tiemann  (tiemann at apple-gunkies.ai.mit.edu)
  867.  
  868.     * cplus-parse.y (stmt): Exception contour is transparent to BREAK
  869.     statement.  Call `expand_exit_nonexcept' instead of
  870.     `expand_exit_something'.
  871.     * stmt.c (expand_exit_nonexcept): New function.
  872.  
  873.     * cplus-decl.c (build_enumerator): Accidently shared INTEGER_CST
  874.     nodes which should not have been shared.
  875.  
  876. Sun Jan  7 00:13:39 1990  Michael Tiemann  (tiemann at g.oswego.edu)
  877.  
  878.     * cplus-init.c (expand_aggr_init_1): Use CONST0_RTX as TARGET for
  879.     call to `expand_expr' in case of COND_EXPR.
  880.     Similar changes made elsewhere in compiler where `expand_expr' was
  881.     called.
  882.  
  883.     * cplus-typeck.c (build_modify_expr_1): When CODE is INIT_EXPR,
  884.     and we call a constructor, remember to dereference the result we
  885.     return.
  886.  
  887.     * cplus-init.c (expand_vec_init): Goto of init_by_default was
  888.     accidently circumventing initialization of variable BASE2.
  889.     Also fixed to handle initialization by default in more cases.
  890.  
  891.     * cplus-typeck.c (build_modify_expr_1): Typo.  Use "<" instead of
  892.     "<=" for CLASSTYPE_N_BASECLASS loop.
  893.     * cplus-search.c (get_base_type_1): Same typo (but this function
  894.     is never called).
  895.  
  896. Sat Jan  6 21:55:31 1990  Michael Tiemann  (tiemann at g.oswego.edu)
  897.  
  898.     * cplus-tree.h (TREE_HAS_CONSTRUCTOR): For CONSTRUCTOR, means that
  899.     it was a GNU C constructor expression.
  900.     * cplus-parse.y (cast_expr): Set that bit.
  901.     * cplus-type2.c (process_init_constructor): Propagate this bit.
  902.     * cplus-init.c (expand_aggr_init_1): Test that bit and call
  903.     `store_init_value' if set.
  904.  
  905.     * cplus-lex.c: Handle strrchr/rindex problem in one place instead
  906.     of two.
  907.  
  908.     * cplus-init.c (expand_aggr_init_1): Convert INIT to type for EXP
  909.     treating INIT as compound expr.
  910.  
  911.     * cplus-decl.c (grokparms): Can't use `error_with_decl' on a
  912.     PARM_DECL here because DECL_CONTEXT is not set up yet.  Fixed in 2
  913.     places.
  914.  
  915.     * cplus-init.c (resolve_member_ref): Check that member is
  916.     FIELD_DECL before bothering about use of non-static member in
  917.     static function context.
  918.  
  919.     * cplus-init.c (embrace_waiting_friends): If TYPE_NAME (TYPE) is
  920.     not a TYPE_DECL, it has no friends waiting.
  921.  
  922.     * cplus-dem.c (optable): Filled in ommissions found by Ron
  923.     Guilmette.
  924.  
  925.     * cplus-decl2.c (grokopexpr): If IS_DECL tells us we have a static
  926.     member function, but TYPE is a METHOD_TYPE, we must send the right
  927.     argument list to build_operator_fnname.
  928.  
  929.         * Makefile: Explicitly link all the gen*.o and insn-*.? files.
  930.     Otherwise, we get symbolic links to "gen*.o", etc.
  931.  
  932.     * make-links.g++: Added symout.c to BORROWED_FILES.
  933.  
  934. Tue Jan  2 00:39:40 1990    (tiemann at calvin)
  935.  
  936.     * cplus-except.c (cplus_expand_end_except): New parameter EXITFLAG
  937.     says whether to exit current exception contour and try the next
  938.     one.
  939.     * cplus-parse.y: Callers changed.
  940.  
  941.     * cplus-decl.c (pushdecl): Clear TREE_PUBLIC only if VAR_DECL is
  942.     TREE_READONLY and not DECL_EXTERNAL.  DECL_EXTERNAL is meaningless
  943.     for other than VAR_DECLs.
  944.     * cplus-decl.c (duplicate_decls): Same change.
  945.     @@ Maybe we can eliminate some duplicated code here!
  946.  
  947.     * cplus-tree.c (copy_to_permanent): If T is NULL_TREE, return it.
  948.  
  949.     * cplus-cvt.c (convert_to_aggr): Deal with "in charge" parameter
  950.     if BASETYPE uses virtual baseclasses.
  951.  
  952.     * cplus-class.c (build_overload_call): Change name of DECL to
  953.     OVERLOAD_NAME.  Also, append VOID_LIST_NODE to end of PARMTYPES,
  954.     to build more accurate overload name.
  955.  
  956. Mon Jan  1 13:36:07 1990    (tiemann at calvin)
  957.  
  958.     * cplus-decl.c (store_parm_decls): No need for PRESERVE flag, so
  959.     deleted.  All callers changed.
  960.  
  961.     * cplus-parse.y (member_init): De-implement keeping virtual
  962.     baseclass initializers on the permanent obstack.  Now handled by
  963.     "in charge" parameter to constructor.
  964.  
  965.     * cplus-cvt.c (convert_to_reference): Convert EXPR from reference
  966.     if it came in as a reference and its conversion to TYPE& may
  967.     change its value (i.e., if it uses MI or VB).
  968.  
  969.     * cplus-class.c (build_method_call): Use DECL_CONTEXT, not
  970.     DECL_VCONTEXT of FUNCTION when LOOKUP_NONVIRTUAL is in effect.
  971.     Factored out duplicated code in the process.
  972.  
  973.     * cplus-class.c (build_method_call): Constructors called when
  974.     `this' is logically zero must perform any virtual baseclass
  975.     initialization.  Other constructors (which are used for
  976.     initialization of sub-ojbects), never perform virtual baseclass
  977.     initialization.
  978.  
  979.